package com.itheima.system;

import com.itheima.domain.Student;

import java.util.ArrayList;
import java.util.Scanner;

/**
 * 第四个版本
 *  方法不需要集合参数
 *
 */
public class SystemEntry888 {
    static ArrayList<Student> list = new ArrayList<>();

    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
        //思路 ① 用输出语句完成主界面的编写
        //
        //	② 用Scanner实现键盘录入数据
        //
        //	③ 用switch语句完成操作的选择
        //
        //	④ 用循环完成再次回到主界面
        /**
         * 键盘录入
         *
         * switch
         *
         * while 死循环
         *
         * 循环标号
         */
        xuanze:
        while (true) {
            System.out.println("--------欢迎来到学生管理系统--------");
            System.out.println("1 添加学生");
            System.out.println("2 删除学生");
            System.out.println("3 修改学生");
            System.out.println("4 查看学生");
            System.out.println("5 退出");
            System.out.println("请输入您的选择:");
            int choice = sc.nextInt();
            switch (choice) {
                case 1:
                    // System.out.println("添加学生");//模拟我已经把这个做完了
                    addStudent();
                    break;
                case 2:
                    // System.out.println("删除学生");//模拟我已经把这个做完了
                    deleteStudent();
                    break;
                case 3:
                    // System.out.println("修改学生");//模拟我已经把这个做完了
                    updateStudent();
                    break;
                case 4:
                    //System.out.println("查看学生");//模拟我已经把这个做完了
                    findAllStudent();
                    break;

                case 5:
                    System.out.println("感谢使用");//模拟我已经把这个做完了
                    //break xuanze;

                    //return;
                    System.exit(0);
                default:
                    System.out.println("输入有误");//模拟我已经把这个做完了
                    break;
            }
        }


    }

    public static void updateStudent() {
        //录入要删除的学号
        //录入信息
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入学号");
        //学号
        String sid = sc.next();
        //获取学号所在的索引
        int index = getIndex(sid);
        //判断是否存在
        if (index != -1) {
            //存在  修改
            System.out.println("请输入姓名");
            //姓名
            String name = sc.next();
            System.out.println("请输入年龄");

            //年龄
            int age = sc.nextInt();
            System.out.println("请输入生日");
            //生日
            String birthday = sc.next();
            Student student = new Student();
            student.setSid(sid);
            student.setName(name);
            student.setAge(age);
            student.setBirthday(birthday);
            //加入集合
            list.set(index, student);
            System.out.println("修改成功!");
        } else {
            //不存在 提示
            System.out.println("您要修改的学号 不存在 ");
            // TODO 再继续录入
        }

    }

    public static void deleteStudent() {

        //录入要删除的学号
        //录入信息
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入学号");
        //学号
        String sid = sc.next();
        //获取学号所在的索引
        int index = getIndex(sid);
        //判断是否存在
        if (index != -1) {
            //存在  删除
            list.remove(index);
            System.out.println("删除成功!");
        } else {
            //不存在 提示
            System.out.println("您要删除的学号 不存在 ");
            // TODO 再继续录入
        }
    }

    /**
     * 查看所有学生
     *
     *
     */
    public static void findAllStudent() {
        //判断是否为空
        //如果为空
        if (list.size() == 0) {//isEmpty()
            // 提示没有数据
            System.out.println("没有学生数据, 请先添加");
            //结束方法
            return;
        } else {
            //展示数据
            //展示表头
            System.out.println("学号\t姓名\t年龄\t生日");
            //展示集合中的数据
            for (int i = 0; i < list.size(); i++) {
                //list.get(i);
                Student student = list.get(i);
                System.out.println(student.getSid() + "\t" + student.getName() + "\t" + student.getAge() + "岁\t" + student.getBirthday());

            }
        }


    }

    /**
     * 录入学生信息, 添加到集合中
     *
     * @param
     */
    public static void addStudent() {
        //录入信息
        Scanner sc = new Scanner(System.in);
        String sid;
        while (true) {
            System.out.println("请输入学号");
            //学号
            sid = sc.next();
            // 判断学号是否存在
            int index = getIndex(sid);
            if (index == -1) {
                break;
            } else {
                System.out.println("学号重复,请重新输入");
            }
        }

        System.out.println("请输入姓名");
        //姓名
        String name = sc.next();
        System.out.println("请输入年龄");

        //年龄
        int age = sc.nextInt();
        System.out.println("请输入生日");
        //生日
        String birthday = sc.next();
        //封装数据
        Student student = new Student();
        student.setSid(sid);
        student.setName(name);
        student.setAge(age);
        student.setBirthday(birthday);
        //Student student = new Student(sid, name, age, birthday);
        //加入集合
        list.add(student);
        System.out.println("添加成功!");
    }

    /**
     * 判断学号所在的索引
     * 参数  String学号    ArrayList<Student> 学生集合
     * 返回值  int  学号所在的索引
     */
    public static int getIndex(String sid) {
        //定义 索引变量
        // int index=-1;
        for (int i = 0; i < list.size(); i++) {
            //list.get(i);
            //判断学生的学号和sid 是否相同
            Student student = list.get(i);
            if (student.getSid().equals(sid)) {
                //index=i;
                //break;
                return i;//retrun ;
            }
        }
        return -1;

    }
}
